//
//  NSString+AccountVerification.m
//  RegularExpression
//
//  Created by MyMacbookPro on 16/3/28.
//  Copyright © 2016年 MyMacbookPro. All rights reserved.
//

#import "NSString+AccountVerification.h"

static NSString *pattern = nil;

@implementation NSString (AccountVerification)

- (BOOL)isQQAccount {
    // 正则表达式含义：首位为1~9，位数6~11位，必须以数字结尾
    pattern = @"^[1-9]\\d{5,10}$";
    return [self verifyWithPattern:pattern];
}

- (BOOL)isPhoneNumber {
    // 正则含义：0/86前缀或者没有前缀，其后接1，第二位为358则第三位可以为0~9，第二位为7则第三位必须为6~8，第二位为4则第三位为5或7，后接8位任意数字，数字结尾
    pattern = @"^(0|86)?1([358]\\d|7[678]|4[57])\\d{8}$";
    return [self verifyWithPattern:pattern];
}

- (BOOL)isEmail {
    pattern = @"^[a-z0-9]+([\\._\\-]*[a-z0-9])*@([a-z0-9]+\\-*[a-z0-9]+\\.){1,63}[a-z0-9]+$";
    return [self verifyWithPattern:pattern];
}

- (BOOL)verifyWithPattern:(NSString *)pattern {
    NSError *error = nil;
    NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
    if (error) {
        NSLog(@"正则表达式错误！error:%@", error);
        return NO;
    }
    
    // 对于账号输入验证的情形，一般只取第一组的结果即可。如果校验查找第一次失败，后续的都不再查找
    NSTextCheckingResult *result = [regularExpression firstMatchInString:self options:0 range:NSMakeRange(0, self.length)];
    if (result) {
        return YES;
    } else {
        return NO;
    }
}

@end
